//ch3-5 �е����ӣ�ģ����ģ�����

#include<iostream>
#include<map>

//template<typename T, template<typename TT0, typename TT1> class A>
// ���н���˵class��������stuct�滻����������error C3339: ģ��ģ�������Ҫ�����б���ġ��ࡱ���������ơ���
// �����Ը�Ϊ typename����Ȼvs2022��������������
template<typename T, template<typename TT0, typename TT1> typename A>
struct Foo
{
  A<T, T> bar;
};

template<typename TT0, typename TT1> class Ctest
{
public:
  TT0 t0{ 3 };
  TT1 t1{ 13 };
};

int run_main_ch3_5()
{
  Foo<int, Ctest> obj;
  std::cout << obj.bar.t0 << " " << obj.bar.t1 << std::endl;// 3 13
  Foo<int, std::map> obj_map;
  obj_map.bar[3] = 7;
  return 0;
}

int main() {
  return run_main_ch3_5();
}
